from django.shortcuts import render

# Create your views here.
from rest_framework import viewsets, permissions
from django.db.models import Q
from article.models import Article
from article.serializers import ArticleSerializer


class ArticleViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = Article.objects.all().order_by('-created')
    serializer_class = ArticleSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_queryset(self):
        """
        返回列表视图中实用的查询集，该查询集还用作详细视图中的查找基础。默认返回由 queryset 属性指定的查询集。
        这个方法应该总是被调用而不是直接访问 self.queryset ，因为 self.queryset 只会被计算一起，
        然后这些结果将为后续的请求缓存起来。 该方法可能会被重写以提供动态行为，比如返回基于发出请求的用户的结果集。
        :return:
        """
        print(self.request.query_params)
        data = self.request.query_params
        search = data.get('search')
        if search:
            # 默认是并且的关系
            # return  Article.objects.filter(title__contains=search,
            #                                body__icontains=search).order_by('-created')

            return Article.objects.filter(Q(title__contains=search) | Q(body__icontains=search)).all()
        return Article.objects.all().order_by('-created')

    def perform_create(self, serializer):
        serializer.save(author=self.request.user)
